<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  
  <title>yarn | H5教案</title>

  
  <meta name="author" content="John Doe">
  

  
  <meta name="description" content="Yarn 使用入门Yarn 对你的代码来说是一个包管理器。它可以让你使用并分享全世界开发者的（例如 JavaScript）代码。 Yarn 能够快速、安全、并可靠地完成这些工作，所以你不用有任何担心。
通过Yarn你可以使用其他开发者针对不同问题的解决方案，使自己的开发过程更简单。
代码通过包（pa">
  

  
  
  <meta name="keywords" content="">
  

  <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">

  <meta property="og:title" content="yarn"/>

  <meta property="og:site_name" content="H5教案"/>

  
  <meta property="og:image" content="/ericxie-book/favicon.ico"/>
  

  <link href="/ericxie-book/favicon.ico" rel="icon">
  <link rel="alternate" href="/ericxie-book/atom.xml" title="H5教案" type="application/atom+xml">
  <link rel="stylesheet" href="/ericxie-book/css/style.css" media="screen" type="text/css">
<meta name="generator" content="Hexo 5.3.0"></head>


<body>
<div class="blog">
  <div class="content">

    <header>
  <div class="site-branding">
    <h1 class="site-title">
      <a href="/ericxie-book/">H5教案</a>
    </h1>
    <p class="site-description"></p>
  </div>
  <nav class="site-navigation">
    <ul>
      
    </ul>
  </nav>
</header>

    <main class="site-main posts-loop">
    <article>

  
    
    <h3 class="article-title"><span>yarn</span></h3>
    
  

  <div class="article-top-meta">
    <span class="posted-on">
      <a href="/ericxie-book/2021/01/27/yarn/" rel="bookmark">
        <time class="entry-date published" datetime="2021-01-27T04:59:49.000Z">
          2021-01-27
        </time>
      </a>
    </span>
  </div>


  

  <div class="article-content">
    <div class="entry">
      
        <h2 id="Yarn-使用入门"><a href="#Yarn-使用入门" class="headerlink" title="Yarn 使用入门"></a>Yarn 使用入门</h2><p>Yarn 对你的代码来说是一个包管理器。它可以让你使用并分享全世界开发者的（例如 JavaScript）代码。 Yarn 能够快速、安全、并可靠地完成这些工作，所以你不用有任何担心。</p>
<p>通过Yarn你可以使用其他开发者针对不同问题的解决方案，使自己的开发过程更简单。</p>
<p>代码通过包（package） (或者称为 模块（module）) 的方式来共享。 一个包里包含所有需要共享的代码，以及描述包信息的文件，称为 package.json。</p>
<h3 id="1、安装"><a href="#1、安装" class="headerlink" title="1、安装"></a>1、安装</h3><p>yarn 安装请进 <a target="_blank" rel="noopener" href="https://yarn.bootcss.com/docs/install/#mac-stable">传送门</a></p>
<h3 id="2、Yarn-使用方法"><a href="#2、Yarn-使用方法" class="headerlink" title="2、Yarn 使用方法"></a>2、Yarn 使用方法</h3><p>现在 Yarn 已经 安装完毕，可以开始使用了。 以下是一些你需要的最常用的命令：</p>
<h3 id="2-1-初始化一个新项目"><a href="#2-1-初始化一个新项目" class="headerlink" title="2.1 初始化一个新项目"></a>2.1 初始化一个新项目</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yarn init</span><br></pre></td></tr></table></figure>
<h3 id="2-2-添加依赖包"><a href="#2-2-添加依赖包" class="headerlink" title="2.2 添加依赖包"></a>2.2 添加依赖包</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">yarn add [package]</span><br><span class="line">yarn add [package]@[version]</span><br><span class="line">yarn add [package]@[tag]</span><br></pre></td></tr></table></figure>
<h3 id="2-3-将依赖项添加到不同依赖项类别中"><a href="#2-3-将依赖项添加到不同依赖项类别中" class="headerlink" title="2.3 将依赖项添加到不同依赖项类别中"></a>2.3 将依赖项添加到不同依赖项类别中</h3><p>分别添加到 devDependencies、peerDependencies 和 optionalDependencies 类别中：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">yarn add [package] --dev</span><br><span class="line">yarn add [package] --peer</span><br><span class="line">yarn add [package] --optional</span><br><span class="line">devDependencies、peerDependencies 和 optionalDependencies区别</span><br></pre></td></tr></table></figure>
<p>在一个Node.js项目中，package.json几乎是一个必须的文件，它的主要作用就是管理项目中所使用到的外部依赖包，同时它也是npm命令的入口文件。</p>
<p>npm 目前支持以下几类依赖包管理：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">dependencies</span><br><span class="line">devDependencies</span><br><span class="line">peerDependencies</span><br><span class="line">optionalDependencies</span><br><span class="line">bundledDependencies / bundleDependencies</span><br></pre></td></tr></table></figure>
<p>dependencies</p>
<p>应用依赖，或者叫做业务依赖，这是我们最常用的依赖包管理对象！它用于指定应用依赖的外部包，这些依赖是应用发布后正常执行时所需要的，但不包含测试时或者本地打包时所使用的包。</p>
<p>devDependencies</p>
<p>开发环境依赖，仅次于dependencies的使用频率！它的对象定义和dependencies一样，只不过它里面的包只用于开发环境，不用于生产环境，这些包通常是单元测试或者打包工具等，例如gulp, grunt, webpack, moca, coffee等。</p>
<p>peerDependencies</p>
<p>同等依赖，或者叫同伴依赖，用于指定当前包（也就是你写的包）兼容的宿主版本。如何理解呢？ 试想一下，我们编写一个gulp的插件，而gulp却有多个主版本，我们只想兼容最新的版本，此时就可以用同等依赖（peerDependencies）来指定。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="string">&quot;name&quot;</span>: <span class="string">&quot;gulp-my-plugin&quot;</span>,</span><br><span class="line">  <span class="string">&quot;version&quot;</span>: <span class="string">&quot;0.0.1&quot;</span>,</span><br><span class="line">  <span class="string">&quot;peerDependencies&quot;</span>: &#123;</span><br><span class="line">    <span class="string">&quot;gulp&quot;</span>: <span class="string">&quot;3.x&quot;</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p>optionalDependencies</p>
<p>可选依赖，如果有一些依赖包即使安装失败，项目仍然能够运行或者希望npm继续运行，就可以使用optionalDependencies。另外optionalDependencies会覆盖dependencies中的同名依赖包，所以不要在两个地方都写。</p>
<p>bundledDependencies / bundleDependencies</p>
<p>打包依赖，bundledDependencies是一个包含依赖包名的数组对象，在发布时会将这个对象中的包打包到最终的发布包里。</p>
<h3 id="2-4-升级依赖包"><a href="#2-4-升级依赖包" class="headerlink" title="2.4 升级依赖包"></a>2.4 升级依赖包</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">yarn upgrade [package]</span><br><span class="line">yarn upgrade [package]@[version]</span><br><span class="line">yarn upgrade [package]@[tag]</span><br></pre></td></tr></table></figure>
<h3 id="2-5-移除依赖包"><a href="#2-5-移除依赖包" class="headerlink" title="2.5 移除依赖包"></a>2.5 移除依赖包</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yarn remove [package]</span><br></pre></td></tr></table></figure>
<h3 id="2-6-安装项目的全部依赖"><a href="#2-6-安装项目的全部依赖" class="headerlink" title="2.6 安装项目的全部依赖"></a>2.6 安装项目的全部依赖</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">yarn</span><br><span class="line">或者</span><br><span class="line">yarn install</span><br></pre></td></tr></table></figure>
      
    </div>

  </div>

  <div class="article-footer">
    <div class="article-meta pull-left">

    

    

    </div>

    
  </div>
</article>

  






    </main>

    <footer class="site-footer">
  <p class="site-info">
    Proudly powered by <a href="https://hexo.io/" target="_blank">Hexo</a> and
    Theme by <a href="https://github.com/CodeDaraW/Hacker" target="_blank">Hacker</a>
    </br>
    
    &copy; 2021 John Doe
    
  </p>
</footer>
    
    
  </div>
</div>
</body>
</html>